#install.packages("stringr")
library(stringr)
dat <- read.csv('mobile-food-sf.csv', stringsAsFactors = FALSE)
times <- c('12AM', '12PM', '9AM', '8PM')
str_sub(times, end=-3)
## [1] "12" "12" "9"  "8"
str_sub(times, -2)
## [1] "AM" "PM" "AM" "PM"
str_replace(times, pattern = 'AM|PM', replacement = '')
## [1] "12" "12" "9"  "8"
hours <- as.numeric(str_replace(times, pattern = 'AM|PM', replacement = ''))
periods <- str_sub(times, start = -2)
to24 <- function(hours, periods) {
  hr24 <- c()
  for (i in 1:length(hours)) {
    if (periods[i] == 'PM') {
      hr24 <- c(hr24, 12 + hours[i] %% 12)
    } else {
      hr24 <- c(hr24, hours[i] %% 12)
    }
  }
  hr24
}
starthrs <- as.numeric(str_replace(dat$starttime, pattern = 'AM|PM', replacement = ''))
startperiods <- str_sub(dat$starttime, start = -2)
start24 <- to24(starthrs, startperiods)
dat$start <- start24
endhrs <- as.numeric(str_replace(dat$endtime, pattern = 'AM|PM', replacement = ''))
endperiods <- str_sub(dat$endtime, start = -2)
end24 <- to24(endhrs, endperiods)
dat$end <- end24
dat$duration <- dat$end - dat$start
lat_lon <-str_replace_all(dat$Location, pattern = '\\(|\\)', replacement = '')
lat_lon <- str_split(lat_lon, pattern = ',')
lat <- lapply(lat_lon, function(x) x[1])
lat <- as.numeric(unlist(lat))
lon <- lapply(lat_lon, function(x) x[2])
lon <- as.numeric(unlist(lon))
dat$lat <- lat
dat$lon <- lon
library(RgoogleMaps)
# coordinates for center of the map
center <- c(mean(dat$lat, na.rm = TRUE), mean(dat$lon, na.rm = TRUE))

# zoom value
zoom <- min(MaxZoom(range(dat$lat, na.rm = TRUE), 
                    range(dat$lon, na.rm = TRUE)))

# san francisco map
map1 <- GetMap(center=center, zoom=zoom, destfile = "san-francisco.png")
PlotOnStaticMap(map1, dat$lat, dat$lon, col = "#ed4964", pch=20)

library(ggmap)
## Loading required package: ggplot2
dat <- na.omit(dat)
sbbox <- make_bbox(lon = dat$lon, lat = dat$lat, f = .1)
sbbox
##       left     bottom      right        top 
## -122.48867   37.69985 -122.36281   37.81595
# get a 'terrain' map
sf_map <- get_map(location = sbbox, maptype = "terrain", source = "google")
## Warning: bounding box given to google - spatial extent only approximate.
## converting bounding box to center/zoom specification. (experimental)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=37.757897,-122.425744&zoom=13&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
ggmap(sf_map) + 
  geom_point(data = dat, 
             mapping = aes(x = lon, y = lat), 
             color = "red", alpha = 0.2, size = 1)
## Warning: Removed 98 rows containing missing values (geom_point).

dat$optionaltext[1:3]
## [1] "Tacos, Burritos, Tortas, Quesadillas, Mexican Drinks, Aguas Frescas"   
## [2] "Cold Truck: sandwiches, drinks, snacks, candy, hot coffee"             
## [3] "Cold Truck: Pre-packaged Sandwiches, Various Beverages, Salads, Snacks"
foods <- dat$optionaltext[1:10]
burritos <- dat[str_detect(dat$optionaltext, "urritos") == TRUE,]
burritos <- na.omit(burritos)
ggmap(sf_map) + 
  geom_point(data = burritos, 
             mapping = aes(x = lon, y = lat), 
             color = "blue", alpha = 0.2, size = 1)
## Warning: Removed 18 rows containing missing values (geom_point).

animals <- c('dog', 'cat', 'bird', 'dolphin', 'lion',
             'zebra', 'tiger', 'wolf', 'whale', 'eagle',
             'pig', 'osprey', 'kangaroo', 'koala')
grep("o*", animals, value=TRUE)
##  [1] "dog"      "cat"      "bird"     "dolphin"  "lion"     "zebra"   
##  [7] "tiger"    "wolf"     "whale"    "eagle"    "pig"      "osprey"  
## [13] "kangaroo" "koala"
grep("o?", animals, value=TRUE)
##  [1] "dog"      "cat"      "bird"     "dolphin"  "lion"     "zebra"   
##  [7] "tiger"    "wolf"     "whale"    "eagle"    "pig"      "osprey"  
## [13] "kangaroo" "koala"
grep("o+", animals, value=TRUE)
## [1] "dog"      "dolphin"  "lion"     "wolf"     "osprey"   "kangaroo"
## [7] "koala"
grep("oo", animals, value=TRUE)
## [1] "kangaroo"
grep("o[^o]", animals, value=TRUE)
## [1] "dog"     "dolphin" "lion"    "wolf"    "osprey"  "koala"
grep("(a|e|i|o|u)(a|e|i|o|u)", animals, value=TRUE)
## [1] "lion"     "eagle"    "kangaroo" "koala"
grep("[^aeiou][^aeiou][^aeiou]", animals, value=TRUE)
## [1] "dolphin" "osprey"
grep("^...$", animals, value=TRUE)
## [1] "dog" "cat" "pig"
grep("^....$", animals, value=TRUE)
## [1] "bird" "lion" "wolf"
files <- c('sales1.csv', 'orders.csv', 'sales2.csv',
           'sales3.csv', 'europe.csv', 'usa.csv', 'mex.csv',
           'CA.csv', 'FL.csv', 'NY.csv', 'TX.csv',
           'sales-europe.csv', 'sales-usa.csv', 'sales-mex.csv')
grep("[0-9]", files, value=TRUE)
## [1] "sales1.csv" "sales2.csv" "sales3.csv"
grep("^([^0-9])*$", files, value=TRUE)
##  [1] "orders.csv"       "europe.csv"       "usa.csv"         
##  [4] "mex.csv"          "CA.csv"           "FL.csv"          
##  [7] "NY.csv"           "TX.csv"           "sales-europe.csv"
## [10] "sales-usa.csv"    "sales-mex.csv"
grep("[a-z]", files, value=TRUE)
##  [1] "sales1.csv"       "orders.csv"       "sales2.csv"      
##  [4] "sales3.csv"       "europe.csv"       "usa.csv"         
##  [7] "mex.csv"          "CA.csv"           "FL.csv"          
## [10] "NY.csv"           "TX.csv"           "sales-europe.csv"
## [13] "sales-usa.csv"    "sales-mex.csv"
grep("[A-Z]", files, value=TRUE)
## [1] "CA.csv" "FL.csv" "NY.csv" "TX.csv"
grep("-", files, value=TRUE)
## [1] "sales-europe.csv" "sales-usa.csv"    "sales-mex.csv"
grep("^([^-])*$", files, value=TRUE)
##  [1] "sales1.csv" "orders.csv" "sales2.csv" "sales3.csv" "europe.csv"
##  [6] "usa.csv"    "mex.csv"    "CA.csv"     "FL.csv"     "NY.csv"    
## [11] "TX.csv"
str_replace(files, 'csv', 'txt')
##  [1] "sales1.txt"       "orders.txt"       "sales2.txt"      
##  [4] "sales3.txt"       "europe.txt"       "usa.txt"         
##  [7] "mex.txt"          "CA.txt"           "FL.txt"          
## [10] "NY.txt"           "TX.txt"           "sales-europe.txt"
## [13] "sales-usa.txt"    "sales-mex.txt"
str_split(files, pattern='\\.')
## [[1]]
## [1] "sales1" "csv"   
## 
## [[2]]
## [1] "orders" "csv"   
## 
## [[3]]
## [1] "sales2" "csv"   
## 
## [[4]]
## [1] "sales3" "csv"   
## 
## [[5]]
## [1] "europe" "csv"   
## 
## [[6]]
## [1] "usa" "csv"
## 
## [[7]]
## [1] "mex" "csv"
## 
## [[8]]
## [1] "CA"  "csv"
## 
## [[9]]
## [1] "FL"  "csv"
## 
## [[10]]
## [1] "NY"  "csv"
## 
## [[11]]
## [1] "TX"  "csv"
## 
## [[12]]
## [1] "sales-europe" "csv"         
## 
## [[13]]
## [1] "sales-usa" "csv"      
## 
## [[14]]
## [1] "sales-mex" "csv"
split_chars <- function(str) {
  str_split(str, "")
}
split_chars('Go Bears!')
## [[1]]
## [1] "G" "o" " " "B" "e" "a" "r" "s" "!"
split_chars('Expecto Patronum')
## [[1]]
##  [1] "E" "x" "p" "e" "c" "t" "o" " " "P" "a" "t" "r" "o" "n" "u" "m"
reverse_chars <- function(str) {
   paste(rev(unlist(str_split(str, ""))), collapse='')
}
reverse_chars("gattaca")
## [1] "acattag"
reverse_chars("Lumox Maxima")
## [1] "amixaM xomuL"